{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data02/users/lz/miniconda3/envs/UICoder/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
      "  from .autonotebook import tqdm as notebook_tqdm\n"
     ]
    }
   ],
   "source": [
    "from datasets import Dataset\n",
    "import matplotlib.pyplot as plt\n",
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "ds = Dataset.load_from_disk('/data02/users/lz/code/UICoder/datasets/c4-wash/H128-2560_C128-4096_R2/c4-format-marked')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dataset({\n",
       "    features: ['image', 'struct', 'style', 'margin', 'color', 'aesthetics', 'score'],\n",
       "    num_rows: 499\n",
       "})"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 499/499 [00:06<00:00, 82.35it/s] \n"
     ]
    },
    {
     "data": {
      "image/png": "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cnd316BBg+Tj46Nhw4ZpzJgx8vPzk7e3t5588kl16NCBO7EAAICdS4edn3/+WYMGDdLJkydVt25dderUSTt27FDdunUlSa+//rrc3NwUExOjwsJC9erVS2+99ZaTqwYAAK7EpcPOkiVLrni8atWqSkxMVGJiYgVVBAAAKptKtWYHAADgehF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqbl02Jk6dapuu+02eXl5qV69ehowYIAOHjzo0Kdr166yWCwO2+OPP+6kigEAgKtx6bCzZcsWjRgxQjt27NCGDRt0/vx59ezZUwUFBQ79hg8fruzsbPv26quvOqliAADgaqo4u4ArWbt2rcP+ggULVK9ePe3Zs0edO3e2t1evXl0BAQEVXR4AAKgEXHpm5/fy8vIkSX5+fg7tH3zwgerUqaOWLVsqISFBZ8+eveI4hYWFstlsDhsAADAnl57Z+a3i4mKNGjVKHTt2VMuWLe3tDzzwgIKDg2W1WrVv3z49//zzOnjwoD7++OPLjjV16lRNmjSpIsoGAABOVmnCzogRI7R//35t377doT0uLs7+51tvvVWBgYHq3r27MjIyFBYWVupYCQkJGjNmjH3fZrMpKCjoxhQOAACcqlJcxoqPj9eaNWu0adMm1a9f/4p9IyMjJUnp6emX7ePp6Slvb2+HDQDgOrZu3ap+/frJarXKYrEoKSnJ4fjv78K9tE2fPt05BcOluXTYMQxD8fHxWrlypVJSUhQaGnrV16SlpUmSAgMDb3B1AIAbpaCgQBEREUpMTCz1+G/vwM3Ozta8efNksVgUExNTwZWiMnDpy1gjRozQ4sWLtWrVKnl5eSknJ0eS5OPjo2rVqikjI0OLFy9Wnz59VLt2be3bt0+jR49W586dFR4e7uTqAQBlFR0drejo6Mse//0duKtWrVK3bt3UsGHDG10aKiGXDjtvv/22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BQVp5MiRKigoqLgPD6BcEXYAuKSaNWuqZs2aSkpKUmFhYYnjxcXFio6O1ueff65Fixbpu+++07Rp0+Tu7i5J2rNnj+677z4NHDhQ33zzjSZOnKhx48aV+GHX1157TREREfrqq680btw4ZWRkqHfv3oqJidG+ffu0dOlSbd++XfHx8RXxsQHcAPwQKACX9dFHH2n48OH65Zdf1KZNG3Xp0kUDBw5UeHi41q9fr+joaB04cEC33HJLidcOHjxYx48f1/r16+1tzz33nD799FN9++23ki7O7LRu3VorV66093n00Ufl7u6ud955x962fft2denSRQUFBapateoN/MQAbgRmdgC4rJiYGGVlZWn16tXq3bu3Nm/erDZt2mjBggVKS0tT/fr1Sw06knTgwAF17NjRoa1jx446dOiQioqK7G3t2rVz6PP1119rwYIF9pmlmjVrqlevXiouLlZmZmb5f0gANxwLlAG4tKpVq6pHjx7q0aOHxo0bp0cffVQTJkzQM888Uy7j16hRw2E/Pz9fjz32mEaOHFmib4MGDcrlPQFULMIOgEqlefPmSkpKUnh4uH7++Wf98MMPpc7uNGvWrMQt6p9//rluueUW+7qe0rRp00bfffedGjVqVO61A3AOLmMBcEknT57UXXfdpUWLFmnfvn3KzMzU8uXL9eqrr+ruu+9Wly5d1LlzZ8XExGjDhg3KzMzUZ599prVr10qSnn76aSUnJ2vKlCn64YcftHDhQs2ZM+eqM0LPP/+8vvjiC8XHxystLU2HDh3SqlWrWKAMVGLM7ABwSTVr1lRkZKRef/11ZWRk6Pz58woKCtLw4cP1wgsvSLq4gPmZZ57RoEGDVFBQoEaNGmnatGmSLs7QLFu2TOPHj9eUKVMUGBioyZMna8iQIVd83/DwcG3ZskX/+Mc/dOedd8owDIWFhen++++/0R8ZwA3C3VgAAMDUuIwFAABMjbADAABMjbADAABMjbADAABMjbADAABMjbADAABMjbADAABMjbADAABMjbADAABMjbADAABMjbADAABMjbADAABM7f8D7qEZSzx0p3IAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_counts = {}\n",
    "for item in tqdm(ds):\n",
    "    score = item['score']\n",
    "    if score in score_counts:\n",
    "        score_counts[score] += 1\n",
    "    else:\n",
    "        score_counts[score] = 1\n",
    "\n",
    "# 提取分数和数量\n",
    "scores = list(score_counts.keys())\n",
    "counts = list(score_counts.values())\n",
    "\n",
    "# 绘制柱状图\n",
    "plt.bar(scores, counts, color='skyblue')\n",
    "plt.xlabel('Score')\n",
    "plt.ylabel('Count')\n",
    "plt.title('Distribution of Scores')\n",
    "plt.xticks(scores)\n",
    "\n",
    "for i in range(len(scores)):\n",
    "    plt.text(scores[i], counts[i], str(counts[i]), ha='center', va='bottom')\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "UICoder",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
